const Router = require("koa-router");
// 导入模型
const bookInfo = require("../models/bookModel");
const router = module.exports = new Router();
const {Op} = require("sequelize");

// 查询所有书籍信息
function getBooksInfo() {
    return bookInfo.findAll();
}

// 根据作者查询
function getBookByAuthor(authorName){
    return bookInfo.findAll({
        where:{
            author:{
                [Op.like]:`%${authorName}%`
            }
        }
    })
}

//根据主键删除书籍
function deleteBookById(bid) {
    return bookInfo.destroy({
        where:{
            id: bid
        }
    })
}

// 根据id获取书籍
function getBookInfoById(id) {
    return bookInfo.findByPk(id);
}


//修改
function updateBookInfoById(bid,obj) {
    return bookInfo.update(obj,{
        where:{
            id:bid
        }
    })
}

// 新增
function addBooksInfo(obj) {
    return bookInfo.create(obj);
}







//获取所有书籍信息
router.get('/v1/books',async(ctx)=>{
    let obj = await getBooksInfo();
    ctx.body = {
        code:"200",
        msg:"查询成功",
        data:obj
    }
});

// 根据姓名查询
router.get('/v1/books/aut/:name',async(ctx)=>{
    //动态路由参数如何获取
    let authorName = ctx.params.name;


    let obj = await getBookByAuthor(authorName);
    ctx.body = {
        code:"200",
        msg:"查询成功",
        data:obj
    }
});


// 根据id查询，并删除
router.delete('/v1/books/:id',async(ctx)=>{

    let id = ctx.params.id;
    console.log(id);

    // 受影响行数
    let result = await deleteBookById(id);
    // 判断result
    if(result){
        ctx.body={
            code:"200",
            msg:"删除成功",
            data:result
        }
    }

});


// 根据id查询
router.get('/v1/books/:id',async(ctx)=>{

    let id = ctx.params.id;

    // 受影响行数
    let obj = await getBookInfoById(id);
    // 判断obj
    if(obj){
        ctx.body={
            code:"200",
            msg:"删除成功",
            data:obj
        }
    }

});

//修改书籍信息
router.put('/v1/books/:id',async(ctx)=>{

    let id = ctx.params.id;

    const obj = ctx.request.body;

    console.log(obj);

    // 受影响行数
    let result = await updateBookInfoById(id,obj);
    // 判断obj
    if(result){
        ctx.body={
            code:"200",
            msg:"修改成功",
            data:result
        }
    }

});

//新增
router.post('/v1/books',async(ctx)=>{

    const obj = ctx.request.body;
    console.log(obj);
    let result = await addBooksInfo(obj);
    if(result){
        ctx.body = {
            code:"200",
            msg:"添加成功",
            data:result
        }
    }
});